package sige

class DispesaVariavelService {
    
    def inserir(dispesa){
        if (! dispesa instanceof DespesaVariavel) return false
        
        sige.DespesaVariavel disp = (sige.DespesaVariavel) dispesa
        Date data = disp.dataDeVencimento
        Calendar c = Calendar.getInstance()
        c.setTime(data)
        try{
            disp.numeroDeParcelas.times {
                Pagamento pag = new Pagamento(valor: disp.valorBase, dataDeVencimento: data)
                pag.movimentacao = disp
                pag.save(flush: true)
                switch(disp.sazonalidade){
                    case "Anual":
                        c.roll(Calendar.YEAR, 1)//andou um ano
                        break
                    case "Mensal":
                        c.roll(Calendar.MONTH, 1)//andou um mês
                        break
                    case "Semanal":
                        int ant = c[Calendar.MONTH]
                        c.roll(Calendar.WEEK_OF_YEAR, 1)//andou uma semana
                        if(c[Calendar.MONTH] < ant){
                            c.roll(Calendar.YEAR, 1)
                        }
                        break
                }
                data = c.getTime()
            }
        }catch (e){
            return false
        }
        return true
    }
}
